#include<iostream>
#include<cstring>
using namespace std;
const int N = 110, M = 1e4 + 10;
int f[M];//注意f的括号意味着本金所以得用M
int p[N][N];
int t, n, m;
int test(int v[], int w[])
{
	//每一次调用都需要memset清空数据
	memset(f, 0, sizeof(f));
	for (int i = 1;i <= n;i++)
	{
		for (int j = v[i];j <= m;j++)
		{
			//不超过j从前i个购买的最大利润，其中j不超过m
			f[j] = max(f[j], f[j - v[i]] + w[i] - v[i]);//w[i]-v[i]是利润
		}
	}
	return m + f[m];
}
int main()
{
	cin >> t >> n >> m;
	for (int i = 1;i <= t;i++)
	{
		for (int j = 1;j <= n;j++)
		{
			cin >> p[i][j];
		}
	}
	for (int i = 1;i < t;i++)
	{
		//对于每一天的本金是完全背包问题
		m = test(p[i], p[i + 1]);//更新本金
	}
	cout << m << endl;
	return 0;
}